package cn.italkcloud.cph.constants.enums.vos;

import lombok.Getter;

/**
 * VOS API 枚举
 */
@Getter
public enum ApiEnum {

    /**
     * 非必需 type int 获取内容方式，不设置与设置0相同，0:获取 accounts 1:获取 infoCustomerBriefs
     */
    GET_CUSTOMER_LIST("获取所有账户账号", "GetAllCustomers", "type"),
    /**
     * 必需 accounts、e164s 、filterAgentAccount三项至少选其一
     * accounts String[] 账户号码列表
     * e164s String[] 电话号码列表
     * filterAgentAccount FilterAgentAccount 代理商账户（表示仅查询该代理商的下属账户）
     * 非必需 type Integer 账户类型 0:普通账户 1:电话卡 2:结算账户
     * <p>
     * FilterAgentAccount:
     * filterAgentAccount String 代理商账户号码
     * querySonMode int 0:所有下属账户 1:直属下属账户
     */
    GET_CUSTOMER_DETAIL("查询账户", "GetCustomer", "accounts", "e164s", "filterAgentAccount", "type"),
    /**
     * 必须 ownerName String 充值对象名称
     * 必须 ownerType int 充值对象名称类型 2:账户 6:平台话机 11:在用电话卡卡号 25:绑定号码 44:对接网关
     * 必须 money double 充值金额
     * 非必需 memo String 充值备注
     */
    PAY_CUSTOMER("账户充值", "Pay", "ownerName", "ownerType", "money", "memo"),
    /**
     * 必需 account、agentAccount两项至少选其一
     * account String 账户号码
     * agentAccount String 代理商账户号码
     * 必需 beginTime String 开始时间 yyyyMMddHHmmss
     * 必需 endTime String 开始时间 yyyyMMddHHmmss
     */
    GET_PAY_HISTORY("查询充值记录", "GetPayHistory", "account", "agentAccount", "beginTime", "endTime"),

    /**
     * 必需 accounts String[] 账户号码列表
     * 必需 period int 统计周期 1:按天 2:按月
     * 必需 beginTime String 开始时间 yyyyMMdd
     * 必需 endTime String 终止时间 yyyyMMdd
     */
    GET_REPORT_CUSTOMER_FEE("查询账户明细报表", "GetReportCustomerFee", "accounts", "period", "beginTime", "endTime"),


    /**
     * 必需 accounts String 账户号码
     * 非必需 name String 账户名称
     * 非必需 limitMoney Double 账户透支限额
     * 非必需 lockType int 锁定类型 0:未锁定 1:锁定
     * 非必需 validTime Long 账户有效期 时间戳
     */
    MODIFY_CUSTOMER("修改账户信息", "ModifyCustomer", "account", "name", "limitMoney", "lockType", "validTime"),

    /**
     * 非必需 names String[] 网关名称，不传则查询全部网关
     */
    GET_GATEWAY_ROUTING_ONLINE("获取在线落地网关", "GetGatewayRoutingOnline", "names"),

    /**
     * 非必需 names String[] 网关名称，不传则查询全部网关
     */
    GET_GATEWAY_MAPPING_ONLINE("获取在线对接网关", "GetGatewayMappingOnline", "names"),
    ;


    private static final String BASE_PATH = "external/server/";
    final String name;
    final String uri;
    final String[] params;

    ApiEnum(String name, String path, String... params) {
        this.name = name;
        this.uri = BASE_PATH + path;
        this.params = params;
    }


}
